var sax = require('../lib/sax')
var tap = require('tap')

function testPosition(chunks, expectedEvents) {
  var parser = sax.parser()
  expectedEvents.forEach(function (expectation) {
    parser['on' + expectation[0]] = function () {
      for (var prop in expectation[1]) {
        tap.equal(parser[prop], expectation[1][prop])
      }
    }
  })
  chunks.forEach(function (chunk) {
    parser.write(chunk)
  })
}

testPosition(
  ['<div>abcdefgh</div>'],
  [
    ['opentagstart', { position: 5, startTagPosition: 1 }],
    ['opentag', { position: 5, startTagPosition: 1 }],
    ['text', { position: 19, startTagPosition: 14 }],
    ['closetag', { position: 19, startTagPosition: 14 }],
  ]
)

testPosition(
  ['<div>abcde', 'fgh</div>'],
  [
    ['opentagstart', { position: 5, startTagPosition: 1 }],
    ['opentag', { position: 5, startTagPosition: 1 }],
    ['text', { position: 19, startTagPosition: 14 }],
    ['closetag', { position: 19, startTagPosition: 14 }],
  ]
)
